#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
//线程处理函数
void *threaddeal(void *arg)
{
    int i = *(int *)(arg);
    printf("这是第%d个线程\n", i);
}
//主线程
int main(void)
{
    //线程id
    pthread_t threadid;
    int j;
    //创建大量线程
    int count = 20; //多次循环
    for (j = 0; j < count; j++)
    {
        //线程参数
        int *p = &(j);
        //创建线程
        int ret = pthread_create(&threadid, NULL, threaddeal, (void *)p);
        if (ret)
        {
            printf("线程创建失败: %d\n", ret);
        }
        else //创建成功
        {
            //分离线程回收线程的 stack 占用的空间
            pthread_detach(threadid);
        }
    }
    return 0;
}

//若是执行编译后的执行文件没有输出，可能原因是线程创建出来就与主线程分离，主线程过早结束，导致子线程还未打印；
//想要看到输出的结果可以使用gdb调试，在for循环设置断点，这样就能看见线程的创建了